Appearance
HJ38 求小球落地5次后所经历的路程和第5次反弹的高度
本节目标:理解“HJ38 求小球落地5次后所经历的路程和第5次反弹的高度”的核心思路,并能把它用于实际开发或面试表达。 中等 通过率:41.50% 时间限制:1秒 空间限制:32M 知识点==模拟====思维== 描述 假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高?
数据范围:输入的小球初始高度满足 1≤n≤1000 ,且保证是一个整数 输入描述: 输入起始高度,int型 输出描述: 分别输出第5次落地时,共经过多少米以及第5次反弹多高。 注意:你可以认为你输出保留六位或以上小数的结果可以通过此题。 示例1 输入: 1 ==复制== 输出: 2.8750.03125
- 只遍历四次,最后一次特殊处理
- 每一次遍历,都是先加上一次加弹后落地的高度,然后将这次弹起的高度除以2,再加上这一次落地后回弹的高度;
- 由于题目中只要计算第五次落点为止的高度,最后的回弹高度不加上去 下面是实现这个计算的Python代码: def ball_bounce(h):
初始化总经过的距离和当前高度
total_distance = 0 current_height = h
对于前4次落地,球都会再次反弹
for _ in range(4):
球下落的距离加上当前高度
total_distance += current_height
球反弹的高度是当前高度的一半
current_height /= 2
球反弹上去的距离也要加上
total_distance += current_height
第5次落地,只需加上最后一次下落的距离
total_distance += current_height
第5次反弹的高度
fifth_bounce_height = current_height / 2 return total_distance, fifth_bounce_height
读取输入的起始高度
initial_height = int(input())
计算并打印结果
total_distance, fifth_bounce_height = ball_bounce(initial_height) print("{:.6f}".format(total_distance)) print("{:.6f}".format(fifth_bounce_height))
这段代码首先计算了从第1次落地到第5次落地时小球所经过的总距离,然后计算了第5次反弹的高度。每次反弹高度都是前一次高度的一半,每次落地后经过的距离包括下落和反弹的距离(除了最后一次落地,因为它不再上升)。最后,代码输出了第5次落地时总经过的距离和第5次反弹的高度,结果保留了六位小数。
